﻿using Credinka.Ayni.GEN.UTL;
using Credinka.Ayni.SEA.EN;
using Credinka.Ayni.SEA.RN;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class AsignarCargoPerfil : System.Web.UI.Page
{
    private enDescripcion oenDescripcion;
    private rnDescripcion ornDescripcion;
    private List<enDescripcion> loenDescripcion;

    private enPerfil oenPerfil;
    private rnPerfil ornPerfil;
    private List<enPerfil> loenPerfil;

    private enCargoPerfil oenCargoPerfil;
    private rnCargoPerfil ornCargoPerfil;
    private List<enCargoPerfil> loenCargoPerfil;

    string codigo = string.Empty;

    protected void Page_Load(object sender, EventArgs e)
    {
        var url = Page.Request.QueryString.AllKeys.ToList();

        if (!Page.IsPostBack)
        {
            ListarCargo();
            ListarPerfil();
            if (url.Count > 0)
            {
                codigo = Page.Request.QueryString["codigo"].ToString();
                if (!codigo.Equals(string.Empty))
                {
                    hdfCargo.Value = codigo;
                    ddlCargo.SelectedValue = hdfCargo.Value.ToString();
                    ddlCargo.Enabled = false;
                    CargarPerfilSeleccionado();
                }
            }
        }
    }

    private void ListarCargo()
    {
        ddlCargo.Enabled = true;
        oenDescripcion = new enDescripcion();
        ornDescripcion = new rnDescripcion();
        loenDescripcion = new List<enDescripcion>();
        loenDescripcion = ornDescripcion.ListarCargo();
        ddlCargo.DataSource = loenDescripcion.ToList();
        ddlCargo.DataTextField = "Descripcion";
        ddlCargo.DataValueField = "CodigoElemento";
        ddlCargo.DataBind();
    }

    protected void ListarPerfil()
    {
        oenPerfil = new enPerfil();
        ornPerfil = new rnPerfil();
        loenPerfil = new List<enPerfil>();
        loenPerfil = ornPerfil.ListarPerfil();
        chkListPerfil.DataSource = loenPerfil.ToList();
        chkListPerfil.DataTextField = "Nombre";
        chkListPerfil.DataValueField = "IdPerfil";
        chkListPerfil.DataBind();
    }

    private void CargarPerfilSeleccionado()
    {
        oenCargoPerfil = new enCargoPerfil();
        ornCargoPerfil = new rnCargoPerfil();
        loenCargoPerfil = new List<enCargoPerfil>();
        oenCargoPerfil.IdCargo = int.Parse(ddlCargo.SelectedValue);
        oenCargoPerfil.NumeroPagina = 1;
        oenCargoPerfil.NumeroRegistros = 15;
        loenCargoPerfil = ornCargoPerfil.Listar(oenCargoPerfil);
        Session["ObjetosCargoPerfilBD"] = loenCargoPerfil;

        foreach (ListItem item in chkListPerfil.Items)
        {
            foreach (enCargoPerfil itemObtenidos in loenCargoPerfil)
            {
                if (int.Parse(item.Value) == itemObtenidos.IdPerfil)
                {
                    item.Selected = true;
                }
            }
        }
    }

    protected void btnBuscar_Click(object sender, EventArgs e)
    {
        chkListPerfil.ClearSelection();
        CargarPerfilSeleccionado();
    }

    protected void btnSi_Click(object sender, EventArgs e)
    {
        ornCargoPerfil = new rnCargoPerfil();
        oenCargoPerfil = new enCargoPerfil();
        loenCargoPerfil = (List<enCargoPerfil>)Session["ObjetosCargoPerfilBD"];
        oenCargoPerfil.IdCargo = int.Parse(ddlCargo.SelectedValue);
        oenCargoPerfil.CodigoEstado = 1;

        foreach (ListItem item in chkListPerfil.Items)
        {
            if (item.Selected)
            {
                var newList = loenCargoPerfil.FindAll(s => s.IdPerfil == int.Parse(item.Value));
                if (newList.Count == 0)
                {
                    oenCargoPerfil.IdPerfil = int.Parse(item.Value);
                    oenCargoPerfil.AudNombreUsuarioCreacion = utlAuditoria.ObtenerUsuarioDominio();
                    oenCargoPerfil.AudIPCreacion = utlAuditoria.ObtenerDireccionIP();
                    oenCargoPerfil.AudMacCreacion = utlAuditoria.ObtenerDireccionMAC();
                    ornCargoPerfil.Registrar(oenCargoPerfil);
                }
            }
            else
            {
                var newList = loenCargoPerfil.FindAll(s => s.IdPerfil == int.Parse(item.Value));
                foreach (var itemNew in newList)
                {
                    oenCargoPerfil.IdCargoPerfil = itemNew.IdCargoPerfil;
                    oenCargoPerfil.AudMacModificacion = utlAuditoria.ObtenerDireccionMAC();
                    oenCargoPerfil.AudNombreUsuarioModificacion = utlAuditoria.ObtenerUsuarioDominio();
                    oenCargoPerfil.AudIPModificacion = utlAuditoria.ObtenerDireccionIP();
                    ornCargoPerfil.Eliminar(oenCargoPerfil);
                }
            }
        }

        StringBuilder sb = new StringBuilder();
        sb.Append(@"<script language='javascript'>");
        sb.Append(@"var lbl =  AbrirModal('330', '210', true, false, '#confirmacion', false);");
        sb.Append(@"$('#confirmacion').css('display', 'block');");
        sb.Append(@"</script>");
        ClientScript.RegisterStartupScript(this.GetType(), "JSScript", sb.ToString());
    }
}
